package com.whfc.uni.service;


import com.whfc.common.exception.BizException;
import com.whfc.common.result.PageData;
import com.whfc.entity.dto.OssPathDTO;
import com.whfc.uni.dto.*;

import java.util.Date;

/**
 * @author : qzexing
 * @version : 1.0
 * @date : 2020/6/22 15:13
 */
public interface CarInoutRecordService {

    /**
     * 新增记录 图片地址方式
     *
     * @param carInoutRecordDTO 进出记录
     */
    void saveRecord(CarInoutRecordDTO carInoutRecordDTO);

    /**
     * 获取记录列表
     *
     * @param deptId       组织机构ID
     * @param date         日期
     * @param licensePlate 车牌号
     * @param deviceName   设备名称
     * @param pageNum      页码
     * @param pageSize     每页数量
     * @return 记录列表
     */
    PageData<CarInoutRecordDTO> getRecordList(Integer deptId, Date date, String licensePlate, String deviceName, Integer pageNum, Integer pageSize);

    /**
     * 获取记录列表
     *
     * @param deptId    组织机构ID
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param pageNum   页码
     * @param pageSize  每页数量
     * @return 记录列表
     */
    PageData<CarInoutRecordDTO> getRecordList(Integer deptId, Date startTime, Date endTime, Integer pageNum, Integer pageSize);

    /**
     * 车辆统计（天）
     *
     * @param deptId
     * @param startTime
     * @param endTime
     * @return
     * @throws BizException
     */
    CarStatisticalDTO getDayStatistical(Integer deptId, Date startTime, Date endTime) throws BizException;

    /**
     * 车辆统计（时间）
     *
     * @param deptId
     * @param startTime
     * @param endTime
     * @return
     * @throws BizException
     */
    CarStatisticalDTO getMonthStatistical(Integer deptId, Date startTime, Date endTime) throws BizException;

    /**
     * 导出
     *
     * @param deptId
     * @param startTime
     * @param endTime
     * @return
     */
    OssPathDTO export(Integer deptId, Date startTime, Date endTime) throws BizException;

    /**
     * 车辆日志
     *
     * @param deptId
     * @param date
     * @return
     */
    CarLogDTO carLog(Integer deptId, Date date) throws BizException;

    /**
     * 车辆大屏统计
     *
     * @param deptId
     * @param startTime
     * @param endTime
     * @return
     * @throws BizException
     */
    CarBoardAnalysisDTO boardAnalysis(Integer deptId, Date startTime, Date endTime) throws BizException;

    /**
     * 车辆大屏统计
     *
     * @param deptId
     * @param startTime
     * @param endTime
     * @return
     * @throws BizException
     */
    CarBoardAnalysisDTO boardAnalysis2(Integer deptId, Date startTime, Date endTime) throws BizException;
}
